// function outputNum(){
//     let arr = [1,2,3]
//     arr.reduce((p,x)=>{
//         return p.then(()=>{
//             r =>{
//                 setTimeout(()=>r(console.log(x)),1000)
//             }
//         })
//     },Promise.resolve())
//     return arr
// }
// outputNum()



// // console.log(arr)

// const arr = [1,2,3]
// arr.reduce((p,x)=>p.thrn(()=>new Promise(r => setTimeout(()=> r(console.log(x)),1000))),Promise.resolve)


let arr = [1, 2, 3];
arr.reduce((pre, cur) => {
    return pre.then(() => {
        return new Promise(r => {
            setTimeout(() => {
                r(console.log(cur))
            }, 1000);
        })
    })
}, Promise.resolve())